﻿using Sustainalytics.Entities;
using System;
using System.Collections.Generic;

namespace Sustainalytics.ESG.Entities
{
    public class EsgResearchProfile : IEntity
    {
        public Guid Id { get; set; }
        public int CapitalIqId { get; set; }
        public string CompanyName { get; set; }
        public int CompanyProfileVersion { get; set; }
        public RPCompanyESGComputationResult ComputationResult { get; set; }

        public IEnumerable<RPIndicatorExtended> Indicators { get; set; }
        public IEnumerable<RPIndicatorExtended> ExtraIndicators { get; set; }
        public IEnumerable<KeyEsgIssue> KeyEsgIssues { get; set; }

        public EsgResearchType ResearchType { get; set; }
        public IEnumerable<Source> Sources { get; set; }
        public IEnumerable<int> UniverseIds { get; set; }
        public Guid AnalystId { get; set; }

        public Timestamped<string> SPLCode { get; set; }
        public Timestamped<string> AnalystCommentary { get; set; }
        public Timestamped<string> BusinessModelComment { get; set; }
        public Timestamped<string> ExposureComment { get; set; }
        public Timestamped<string> ManagementAndExposureComment { get; set; }
        public Timestamped<string> AnalystViewComment { get; set; }
        public Timestamped<string> OverallAssessment { get; set; }

        public Timestamped<DateTime> LastUpdate { get; set; }
        public Timestamped<DateTime> LastFullReviewDate { get; set; }
        public Timestamped<DateTime> LastAnnualReportDate { get; set; }
        public Timestamped<DateTime> LastCSRDate { get; set; }
        public Timestamped<DateTime> LastFeedbackRequestDate { get; set; }
        public Timestamped<DateTime> LastFeedbackReceivedDate { get; set; }
    }

    public enum EsgResearchType
    {
        Crt = 0,
        Ert = 1,
        Srt = 2
    }
}
